package com.cc.wechat.handler;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    /**
     * 在插入操作时填充时间字段
     * @param metaObject 元对象，包含插入操作的元数据通过这个对象，可以访问和修改插入操作的相关信息
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        // 填充创建时间字段如果字段存在且类型匹配，则设置当前时间
        this.strictInsertFill(metaObject, "createdAt", LocalDateTime.class, LocalDateTime.now());
        // 填充更新时间字段如果字段存在且类型匹配，则设置当前时间
        this.strictInsertFill(metaObject, "updatedAt", LocalDateTime.class, LocalDateTime.now());
    }

    /**
     * 更新填充方法
     * @param metaObject 元对象，包含实体类的元数据以及操作的上下文信息，用于进行条件判断和值设置
     */
    @Override
    public void updateFill(MetaObject metaObject) {
        // 调用严格更新填充方法，指定更新时间为当前时间
        // 选择性地进行更新填充，仅当实体属性满足特定条件时才进行填充
        this.strictUpdateFill(metaObject, "updatedAt", LocalDateTime.class, LocalDateTime.now());
    }
} 